home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / sharewar / FFE / GRAPH.SWG / 0061_TrueVision TGA v2.0.pas < prev    next >
Pascal/Delphi Source File  |  1997-05-11  |  62KB  |  1,361 lines

  1.                          Truevision TGA (tm)
  2.  
  3.                     FILE FORMAT SPECIFICATION
  4.  
  5.                            Version 2.0
  6.  
  7.  
  8. Document prepared by:
  9.  
  10.                         Truevision, Inc.
  11.                      7340 Shadeland Station
  12.                    Indianapolis, IN 46256-3925
  13.                       317-841-0332--phone
  14.                        317-576-7700--FAX
  15.                     317-577-TRUE (8783)--BBS
  16.  
  17. Technical Manual Version 2.2 January, 1991
  18. Copyright (c) 1989, 1990, 1991 Truevision, Inc.
  19.  
  20. Truevision is a registered trademark of Truevision, Inc.
  21. TARGA is a registered trademark of Truevision, Inc.
  22. TrueVista is a registered trademark of Truevision, Inc.
  23. ATVista is a registered trademark of Truevision, Inc.
  24. NuVista is a registered trademark of Truevision, Inc.
  25. TEPS is a registered trademark of Truevision, Inc.
  26. TGA is a trademark of Truevision, Inc.
  27.  
  28.  
  29. TABLE OF CONTENTS
  30.  
  31. Disclaimer of Warranties and Limitations of Liabilities
  32.  
  33. This manual and the enclosed software were prepared by Truevision,
  34. Inc. While the authors and program developers have taken reasonable
  35. care in preparing this manual to assure accuracy, the authors
  36. assume no liability resulting from any inaccuracy or omissions
  37. contained in them or from the use of the information or programs
  38. contained herein.
  39.  
  40. The authors and Truevision, Inc. have no expressed or implied
  41. warranty of any kind with regard to these programs or to the
  42. supplemental documentation in this manual. In no event shall the
  43. authors, the program developers, or Truevision, Inc. be liable for
  44. incidental or consequential damages in connection with or arising
  45. out of the furnishing, performance or use of any of these programs
  46. or documentation. This disclaimer includes but is not limited to
  47. any loss of service, loss of business or anticipatory profits, or
  48. consequential damages resulting from the use or operation of the
  49. enclosed software.
  50.  
  51.  
  52. TABLE OF CONTENTS
  53.  
  54. INTRODUCTION.................................................1
  55. DEFINITIONS..................................................2
  56. TGA FILE FORMAT SPECIFICATION................................4
  57. TGA FILE HEADER..............................................6
  58.         ID Length - Field 1 (1 byte):........................6
  59.         Color Map Type - Field 2 (1 byte):...................6
  60.         Image Type - Field 3 (1 byte):.......................6
  61.         Color Map Specification - Field 4 (5 bytes):.........7
  62.         Image Specification - Field 5 (10 bytes):............8
  63. IMAGE/COLOR MAP DATA........................................10
  64.         Image ID - Field 6 (variable):......................10
  65.         Color Map Data - Field 7 (variable):................10
  66.         Image Data - Field 8 (variable):....................10
  67. DEVELOPER AREA..............................................11
  68.         Developer Data - Field 9 (variable):................11
  69. EXTENSION AREA..............................................13
  70.         Extension Size - Field 10 (2 Bytes):................13
  71.         Author Name - Field 11 (41 Bytes):..................13
  72.         Author Comments - Field 12 (324 Bytes):.............13
  73.         Date/Time Stamp - Field 13 (12 Bytes):..............14
  74.         Job Name/ID - Field 14 (41 Bytes):..................14
  75.         Job Time - Field 15 (6 Bytes):......................14
  76.         Software ID - Field 16 (41 Bytes):..................15
  77.         Software Version - Field 17 (3 Bytes):..............15
  78.         Key Color - Field 18 (4 Bytes):.....................15
  79.         Pixel Aspect Ratio - Field 19 (4 Bytes):............16
  80.         Gamma Value - Field 20 (4 Bytes):...................16
  81.         Color Correction Offset - Field 21 (4 Bytes):.......16
  82.         Postage Stamp Offset - Field 22 (4 Bytes):..........16
  83.         Scan Line Offset - Field 23 (4 Bytes):..............17
  84.         Attributes Type - Field 24 (1 Byte):................17
  85.         Scan Line Table - Field 25 (Variable):..............18
  86.         Postage Stamp Image - Field 26 (Variable):..........18
  87.         Color Correction Table - Field 27 (2K Bytes):.......18
  88. TGA FILE FOOTER.............................................19
  89.         Byte 0-3 - Extension Area Offset - Field 28.........19
  90.         Byte 4-7 - Developer Directory Offset - Field 29....19
  91.         Byte 8-23 - Signature - Field 30....................20
  92.         Byte 24 - Reserved Character - Field 31.............20
  93.         Byte 25 - Binary Zero String Terminator - Field 32..20
  94. IMAGE TYPES.................................................21
  95.         DATA TYPE 1 - COLOR-MAPPED IMAGES...................21
  96.         DATA TYPE 2 - TRUE-COLOR IMAGES.....................21
  97.         DATA TYPE 3 - BLACK AND WHITE (UNMAPPED) IMAGES.....22
  98.         DATA TYPE 9 - RUN-LENGTH ENCODED (RLE),
  99.          COLOR-MAPPED IMAGES................................22
  100.         DATA TYPE 10 - RUN-LENGTH ENCODED (RLE),
  101.          TRUE-COLOR IMAGES..................................23
  102.         DATA TYPE 11 - RUN-LENGTH ENCODED (RLE),............23
  103.         BLACK AND WHITE IMAGES..............................23
  104. RUN-LENGTH ENCODING OF IMAGES...............................24
  105.         Run-Length Packet:..................................25
  106.         Raw Packet (i.e., Non-Run-Length Encoded):..........26
  107.  
  108.  
  109. INTRODUCTION
  110.  
  111. The success of the TGA(tm) File Format for storing color images
  112. can be attributed to its ease of use, the small amount of program
  113. memory needed to parse the file, and the fact that it was the first
  114. truecolor file format widely available. Truevision (r) defined the
  115. TGA file format in 1984 for use with its first videographics
  116. products. Since then, it has been estimated that today over 80
  117. percent of the color images stored on hard drives employ some
  118. variation of the TGA file format. Many government offices,
  119. corporations, service bureaus, production shops and nearly all
  120. Truevision developers have standardized on the TGA format as a
  121. means of allowing cross-product and cross-application
  122. compatibility. Truevision recommends that this format be used by
  123. all software developed for Truevision products since it allows
  124. customers flexibility in combining many applications together to
  125. provide a total solution to meet their needs.
  126.  
  127. The original Truevision TGA File Format has been widely accepted
  128. by the graphics industry. However, newer technology and techniques
  129. have created the need for additional image information to be
  130. recorded in the file. In 1989, Truevision introduced extensions to
  131. the TGA File Format to satisfy requests made by the graphics
  132. industry and to ensure that the standard will meet future needs of
  133. the color imaging marketplace. The extensions are optional and will
  134. have no impact on existing packages (assuming the packages followed
  135. the original TGA File Format guidelines). In particular, the new
  136. TGA File Format addresses the following needs:
  137.  
  138.      * The inclusion of a scaled-down "postage stamp" copy of the
  139.        image
  140.      * Date and Time of image file creation
  141.      * Author Name
  142.      * Author Comments
  143.      * Job Name
  144.      * Job Accumulated Time
  145.      * Gamma Value
  146.      * Correct Color LUT
  147.      * Pixel Aspect Ratio
  148.      * Scan Line Offset Table
  149.      * Key Color
  150.      * Software Package Name and Version Number
  151.      * Developer Definable Areas
  152.      * Attribute (Alpha) channel Type
  153.      * The ability for simple expansion
  154.  
  155.  
  156. DEFINITIONS
  157.  
  158. Throughout this document, we will be using the terms Pseudo-Color,
  159. True-Color and Direct-Color. These terms are defined as follows:
  160.  
  161. Pseudo-Color--Each pixel value is used as a single index into a
  162.    programmable color map which contains the actual red, green and
  163.    blue intensities to be displayed. The Truevision products that
  164.    use this type of image are: VDA, VDA/D, TARGA(r) M8, ATVista(r),
  165.    NuVista(r) and HR(tm) videographics boards.
  166.  
  167. True-Color--Each pixel value is sub-divided into red, green and
  168.    blue fields that directly determine the intensities of each
  169.    primary color. The Truevision products that use this type of
  170.    image are: ICB, TARGA 16, TARGA 24, TARGA 32, ATVista and
  171.    NuVista videographics boards.
  172.  
  173. Direct-Color--Each pixel value is sub-divided into red, green and
  174.    blue fields which are used as separate indices to access
  175.    independent, programmable look-up tables. The outputs of the
  176.    individual color maps directly determine the intensities of each
  177.    primary color. A Direct-Color system is similar to Pseudo-Color
  178.    except that the values in the color maps can be altered
  179.    individually for the red, green and blue channels; whereas, the
  180.    red, green and blue values in a Pseudo-Color system are loaded
  181.    into one map which is accessed by a single index. Truevision
  182.    products that use this type of image are: ATVista and NuVista
  183.    videographics boards.
  184.  
  185. The TrueVista(r) (ATVista and NuVista) videographics cards can be
  186. programmed to accept images which are Pseudo-Color, True-Color and
  187. Direct-Color. When they are functioning in any of the Linked Modes,
  188. they are said to be acting as Pseudo-Color devices. When they are
  189. configured for any of the Independent Modes, they are said to be
  190. acting as Direct-Color devices. When bypassing the look-up tables
  191. altogether, they are said to be acting as True-Color devices.
  192.  
  193. The VDA, VDA/D, TARGA M8 and HR can only be used as Pseudo-Color
  194. devices. The ICB, TARGA 16, 24 and 32 can only be used as
  195. True-Color devices.
  196.  
  197. Long = 32 bit value
  198.  
  199. Short = 16 bit value
  200.  
  201. Byte = 8 bit value
  202.  
  203. ASCII = sequence of bytes conforming to the ASCII definition
  204.    (Truevision recommends that the ASCII fields contain only
  205.    printable ASCII characters, with exception of the null
  206.    terminator, and that all formatting be performed by the
  207.    application)
  208.  
  209.  
  210. Bit Numbering (for diagrams in this document)
  211.  
  212. 31             24         16 8 7 6 5 4 3 2 1 0
  213.  
  214.  
  215. Byte Ordering
  216.  
  217. TGA files are stored using the Intel byte ordering convention
  218. (least significant byte first, most significant byte last). For
  219. this reason, applications running on Motorola-based systems will
  220. need to invert the ordering of bytes for short and long values
  221. after a file has been read.
  222.  
  223.  
  224. Suffix and File Type Definitions
  225.  
  226. Since there is a great need to be able to locate files easily on
  227. mass storage devices, we have defined a filename suffix for DOS
  228. and UNIX operating systems, and a file type for the Macintosh
  229. environment. You should use this filename suffix or file type for
  230. all TGA image files.
  231.  
  232. 1. DOS, UNDC and XENIX environments--Append to the end of the
  233. filename a three character suffix "TGA" after the "." indicator.
  234. Example: "Image.tga."
  235.  
  236. 2. Macintosh environment--Use a file type of "TPIC".
  237.  
  238. However, the demonstration software and the programs in the
  239. Truevision software series currently use the suffixes, ".VDA",
  240. ".ICB", ".TGA", and ".VST", for VDA/D, ICB, TARGA and ATVista
  241. images. It is therefore suggested that applications should allow
  242. the user the capability of reading images with any of these
  243. extensions, but should only use the extension ".TGA" when writing
  244. images. As future versions of Truevision software products are made
  245. available, they will convert to using the ".TGA" and "TPIC"
  246. conventions exclusively.
  247.  
  248.  
  249. TGA FILE FORMAT SPECIFICATION
  250.  
  251. ED. NOTE:  Figures are not available in this plain text version
  252. of the specification.
  253.  
  254.  
  255. Figure 1
  256.  
  257. While Figure 1 demonstrates one possible arrangement for the
  258. various data blocks within a TGA File, other arrangements are
  259. possible since many of the data blocks are referenced by an offset
  260. position from the beginning of the file. In particular, developers
  261. may find it easier to create the file if the Scan Line Table, the
  262. Postage Stamp Image and the Color Correction Table are located
  263. before the Extension Size field (Field 10). The Truevision TGA File
  264. Format comprises 5 areas, each of which contains one or more fields
  265. of fixed or variable length. The 5 file areas are: (1) TGA File
  266. Header, (2) Image/ColorMap Data, (3) Developer Area, (4) Extension
  267. Area and (5) TGA File Footer.
  268.  
  269. The last 3 areas, the Developer Area, the Extension Area and the
  270. TGA File Footer are new to the file specification as of September,
  271. 1989. For this reason, images created with software written before
  272. September, 1989 will probably not contain these three fields. In
  273. this document, the TGA File format prior to September, 1989 will
  274. be referred to as the Original TGA Format while the current TGA
  275. File format will be referred to as the New TGA Format.
  276.  
  277.    1.  A TGA Reader should begin by determining whether the desired
  278.        file is in the Original TGA Format or the New TGA Format.
  279.        This is accomplished by examining the last 26 bytes of the
  280.        file (most operating systems support some type of SEEK
  281.        function). Reading the last 26 bytes from the file will
  282.        either retrieve the last 26 bytes of image data (if the file
  283.        is in the Original TGA Format), or it will retrieve the TGA
  284.        File Footer (if the file is in the New TGA Format).
  285.  
  286.    2.  To determine whether the acquired data constitutes a legal
  287.        TGA File Footer, scan bytes 8-23 of the footer as ASCII
  288.        characters and determine whether they match the signature
  289.        string:
  290.  
  291.                         TRUEVISION-XFILE
  292.  
  293.        This string is exactly 16 bytes long and is formatted
  294.        exactly as shown above (capital letters), with a hyphen
  295.        between "TRUEVISION" and "XFILE." If the signature is
  296.        detected, the file is assumed to be in the New TGA format
  297.        and MAY, therefore, contain the Developer Area and/or the
  298.        Extension Area fields. If the signature is not found, then
  299.        the file is assumed to be in the Original TGA format and
  300.        should only contain areas 1 and 2; therefore, the byte
  301.        format for the TGA File Footer is defined as follows:
  302.  
  303.               Bytes 0-3:   The Extension Area Offset
  304.               Bytes 4-7:   The Developer Directory Offset
  305.               Bytes 8-23:  The Signature
  306.               Byte 24:     ASCII Character "."
  307.               Byte 25:     Binary zero suing terminator (0x00)
  308.  
  309. Note: DEVELOPERS ARE NOT REQUIRED TO READ, WRITE OR USE THE
  310. EXTENSION OR DEVELOPER AREAS; THEY ARE OPTIONAL. EVEN IF THESE
  311. AREAS ARE NOT USED, IT IS RECOMMENDED THAT A TGA FILE FOOTER STILL
  312. BE INCLUDED WITH THE FILE. Please see page 19 for more information
  313. about the TGA File Footer.
  314.  
  315.  
  316. TGA FILE HEADER
  317.  
  318. ID Length - Field 1 (1 byte):
  319.  
  320. This field identifies the number of bytes contained in Field 6,
  321. the Image ID Field. The maximum number of characters is 255. A
  322. value of zero indicates that no Image ID field is included with
  323. the image.
  324.  
  325.  
  326. Color Map Type--Field 2 (1 byte):
  327.  
  328. This field indicates the type of color map (if any) included with
  329. the image. There are currently 2 defined values for this field:
  330.  
  331. 0-  indicates that no color-map data is included with this image.
  332.  
  333. 1-  indicates that a color-map is included with this image.
  334.  
  335. The first 128 Color Map Type codes (Field 2) are reserved for use
  336. by Truevision, while the second set of 128 Color Map Type codes
  337. (128 to 255) may be used for developer applications.
  338.  
  339. True-Color images do not normally make use of the color map field,
  340. but some current applications store palette information or
  341. developer-defined information in this field. It is best to check
  342. Field 3, Image Type, to make sure you have a file which can use
  343. the data stored in the Color Map Field. Otherwise ignore the
  344. information. When saving or creating files for True-Color images
  345. do not use this field and set it to Zero to ensure compatibility.
  346. Please refer to the Developer Area specification for methods of
  347. storing developer defined information.
  348.  
  349.  
  350. Image Type--Field 3 (1 byte):
  351.  
  352. The TGA File Format can be used to store Pseudo-Color, True-Color
  353. and Direct-Color images of various pixel depths. Truevision has
  354. currently defined seven image types:
  355.  
  356.      Image Type                   Description
  357.  
  358.          0                No Image Data Included
  359.          1                Uncompressed, Color-mapped Image
  360.          2                Uncompressed, True-color Image
  361.          3                Uncompressed, Black-and-white image
  362.          9                Run-length encoded, Color-mapped Image
  363.          10               Run-length encoded, True-color Image
  364.          11               Run-length encoded, Black-and-white image
  365.  
  366.                        Table 1 - Image Types
  367.  
  368. Image Data Type codes 0 to 127 are reserved for use by Truevision
  369. for general applications. Image Data Type codes 128 to 255 may be
  370. used for developer applications.
  371.  
  372. For a complete description of these image-data types, see the IMAGE
  373. TYPES section later in this manual.
  374.  
  375.  
  376. Color Map Specification--Field 4 (5 bytes):
  377.  
  378. This field and its sub-fields describe the color map (if any) used
  379. for the image. If the Color Map Type field is set to zero,
  380. indicating that no color map exists, then these 5 bytes should be
  381. set to zero. These bytes always must be written to the file.
  382.  
  383.      Field 4.1 (2 bytes)-  First Entry Index
  384.  
  385.                            Index of the first color map entry.
  386.                            Index refers to the starting entry in
  387.                            loading the color map.
  388.  
  389.                            Example: If you would have 1024 entries
  390.                            in the entire color map but you only
  391.                            need to store 72 of those entries, this
  392.                            field allows you to start in the middle
  393.                            of the color-map (e.g., position 342).
  394.  
  395.      Field 4.2 (2 bytes)-  Color map Length:
  396.  
  397.                            Total number of color map entries
  398.                            included.
  399.  
  400.      Field 4.3 (1 byte)-   Color map Entry Size:
  401.  
  402.                            Establishes the number of bits per
  403.                            entry. Typically 15, 16, 24 or 32-bit
  404.                            values are used.
  405.  
  406.                            When working with VDA or VDA/D cards it
  407.                            is preferred that you select 16 bits (5
  408.                            bits per primary with 1 bit to select
  409.                            interrupt control) and set the 16th bit
  410.                            to 0 so that the interrupt bit is
  411.                            disabled. Even if this field is set to
  412.                            15 bits (5 bits per primary) you must
  413.                            still parse the color map data 16
  414.                            bits at a time and ignore the 16th bit.
  415.  
  416.                            When working with a TARGA M8 card you
  417.                            would select 24 bits (8 bits per
  418.                            primary) since the color map is defined
  419.                            as 256 entries of 24 bit color values.
  420.  
  421.                            When working with a TrueVista card
  422.                            (ATVista or NuVista) you would select
  423.                            24-bit (8 bits per primary) or 32-bit
  424.                            (8 bits per primary including Alpha
  425.                            channel) depending on your application's
  426.                            use of look-up tables. It is suggested
  427.                            that when working with 16-bit and 32-bit
  428.                            color images, you store them as
  429.                            True-Color images and do not use the
  430.                            color map field to store look-up tables.
  431.                            Please refer to the TGA Extensions for
  432.                            fields better suited to storing look-up
  433.                            table information.
  434.  
  435.  
  436. Image Specification--Field 5 (10 bytes):
  437.  
  438. This field and its sub-fields describe the image screen location,
  439. size and pixel depth. These bytes are always written to the file.
  440.  
  441. Field 5.1 (2 bytes)- X-origin of Image:
  442.  
  443.                        These bytes specify the absolute horizontal
  444.                        coordinate for the lower left comer of the
  445.                        image as it is positioned on a display
  446.                        device having an origin at the lower left
  447.                        of the screen (e.g., the TARGA series).
  448.  
  449. Field 5.2 (2 bytes)- Y-origin of Image:
  450.  
  451.                        These bytes specify the absolute vertical
  452.                        coordinate for the lower left comer of the
  453.                        image as it is positioned on a display
  454.                        device having an origin at the lower left
  455.                        of the screen (e.g., the TARGA series).
  456.  
  457. Field 5.3 (2 bytes)- Image Width:
  458.  
  459.                        This field specifies the width of the image
  460.                        in pixels.
  461.  
  462. Field 5.4 (2 bytes)- Image Height:
  463.  
  464.                        This field specifies the height of the image
  465.                        in pixels.
  466.  
  467. Field 5.5 (1 byte)-  Pixel Depth
  468.  
  469.                        This field indicates the number of bits per
  470.                        pixel. This number includes the Attribute
  471.                        or Alpha channel bits. Common values are 8,
  472.                        16, 24 and 32 but other pixel depths could
  473.                        be used.
  474.  
  475. Field 5.6 (1 byte)-  Image Descriptor:
  476.  
  477.                          Bits 3-0: These bits specify the number
  478.                                    of attribute bits per pixel. In
  479.                                    the case of the TrueVista, these
  480.                                    bits indicate the number of bits
  481.                                    per pixel which are designated
  482.                                    as Alpha Channel bits. For the
  483.                                    ICB and TARGA products, these
  484.                                    bits indicate the number of
  485.                                    overlay bits available per
  486.                                    pixel. See field 24 (Attributes
  487.                                    Type) for more information.
  488.  
  489.                          Bits 5 & 4:These bits are used to indicate
  490.                                    the order in which pixel data
  491.                                    is transferred from the file to
  492.                                    the screen. Bit 4 is for
  493.                                    left-to-right ordering and bit
  494.                                    5 is for top-to-bottom ordering
  495.                                    as shown below.
  496.  
  497.                          Screen destination     Image     Origin
  498.                            of first pixel        bit 5     bit 4
  499.                             bottom left            0         0
  500.                             bottom right           0         1
  501.                              top left              1         0
  502.                              top right             1         1
  503.  
  504.                                    Table 2--Image Origin
  505.  
  506.                          Bits 7 & 6:Must be zero to insure future
  507.                                    compatibility.
  508.  
  509.  
  510. IMAGE/COLOR MAP DATA
  511.  
  512. Image ID--Field 6 (variable):
  513.  
  514. This optional field contains identifying information about the
  515. image. The maximum length for this field is 255 bytes. Refer to
  516. Field 1 for the length of this field. If field 1 is set to Zero
  517. indicating that no Image ID exists then these bytes are not written
  518. to the file.
  519.  
  520.  
  521. Color Map Data- Field 7 (variable):
  522.  
  523. If the Color Map Type (field 2) field is set to zero indicating
  524. that no Color-Map exists then this field will not be present (i.e.,
  525. no bytes written to the file).
  526.  
  527. This variable-length field contains the actual color map
  528. information (LUT data). Field 4.3 specifies the width in bits of
  529. each color map entry while Field 4.2 specifies the number of color
  530. map entries in this field. These two fields together are used to
  531. determine the number of bytes contained in field 7.
  532.  
  533. Each color map entry is stored using an integral number of bytes.
  534. The RGB specification for each color map entry is stored in
  535. successive bit-fields in the multi-byte entries. Each color
  536. bit-field is assumed to be MIN (Field 4.3/3, 8) bits in length. If
  537. Field 4.3 contains 24, then each color specification is 8 bits in
  538. length; if Field 4.3 contains 32, then each color specification is
  539. also 8 bits (32/3 gives 10, but 8 is smaller). Unused bit(s) in
  540. the multi-byte entries are assumed to specify attribute bits. The
  541. attribute bit field is often called the Alpha Channel, Overlay
  542. Bit(s) or Interrupt Bit(s).
  543.  
  544. For the TARGA M-8, ATVista and NuVista, the number of bits in a
  545. color map specification is 24 (or 32). The red, green, and blue
  546. components are each represented by one byte.
  547.  
  548.  
  549. Image Data--Field 8 (variable):
  550.  
  551. This field contains (Width)x(Height) pixels. Each pixel specifies
  552. image data in one of the following formats: a single color-map
  553. index for Pseudo-Color, Attribute, Red, Green and Blue ordered data
  554. for True-Color; and independent color-map indices for Direct-Color.
  555. The values for Width and Height are specified in Fields 5.3 and 5.4
  556. respectively.
  557.  
  558. The number of attribute and color-definition bits for each pixel
  559. are defined in Fields 5.6 and 5.5, respectively. Each pixel is
  560. stored as an integral number of bytes.
  561.  
  562.  
  563. DEVELOPER AREA
  564.  
  565. Developer Data--Field 9 (variable):
  566.  
  567. Truevision created the Developer Area to satisfy the needs of
  568. developers who have already created similar areas on their own. We
  569. have made an attempt to remain upwardly compatible with these
  570. developers' methods.
  571.  
  572. The Developer Area is an area which may be used to store any type
  573. of information, although it is recommended that it be used only
  574. for application specific information, that is, information which
  575. would not be applicable to other products, and which is not already
  576. covered by the TGA File Format.
  577.  
  578. The size and format of the Developer Fields is totally up to the
  579. developer. Readers of files containing these fields should ignore
  580. the fields unless they have an understanding of their organization
  581. and content.
  582.  
  583. Since a file may contain more than one Developer Field, a Developer
  584. Directory was created which contains a "map" to the fields included
  585. in the Developer Area. The Developer Directory is located by using
  586. the offset pointer contained in bytes 4-7 of the TGA File Footer.
  587. The contents of this field are a byte offset from the beginning of
  588. the file to the start of the Developer Directory. If the Offset is
  589. ZERO (binary zero) no directory and no Developer Area fields exist.
  590.  
  591. ED. NOTE:  Figures are not available in this plain text version
  592. of the specification.
  593.  
  594.  
  595. Figure 2
  596.  
  597. The first SHORT in the directory specifies the number of tags which
  598. are currently in the directory. The rest of the directory contains
  599. a series of TAG, OFFSET and SIZE combinations. Each TAG is a SHORT
  600. value in the range of 0 to 65535. Values from 0-32767 are available
  601. for developer use, while values from 32768-65535 are reserved for
  602. Truevision. Truevision will maintain a list of tags assigned to
  603. companies. To get a tag assignment for a product, simply contact
  604. Truevision Developer Services to request the next assignable tag.
  605. If you wish to supply Truevision with the data format of your
  606. field, we will make this information available to other developers
  607. who may wish to read your data (this is at your request only).
  608.  
  609. Following each TAG is an OFFSET. This OFFSET is a LONG value which
  610. specifies the number of bytes from the beginning of the file to
  611. the start of the field referenced by the tag.
  612.  
  613. Following the OFFSET is a FIELD SIZE. The FIELD SIZE is a LONG
  614. value which specifies the number of bytes in the field. This is
  615. useful for the allocation of buffer space for reading the field
  616. and for determining when the end of the field has been reached.
  617. There is no termination character to indicate the end of a field's
  618. data.
  619.  
  620. Each TAG, OFFSET, SIZE set references a particular field of data
  621. in the Developer Area. The TAGS may appear in any order in the
  622. directory (i.e., they do not need to be sorted). Since each set is
  623. 10 bytes in size (1 short, 2 longs), the total size of the
  624. directory will be:
  625.  
  626. (NUMBER_OF_TAGS_IN_THE_DIRECTORY * 10) + 2
  627.  
  628. bytes in size. The "+ 2" includes the 2 bytes for the SHORT value
  629. specifying the number of tags in the directory.
  630.  
  631. Although the size and format of the actual Developer Area fields
  632. are totally up to the developer, please define your formats to
  633. address future considerations you might have concerning your
  634. fields. This means that if you anticipate changing a field, build
  635. flexibility into the format to make these changes easy on other
  636. developers. Major changes to an existing TAG's definition should
  637. never happen. If major changes are required, we would prefer that
  638. you request another TAG number so as not to confuse programs which
  639. may honor your existing tag. Additionally, the developer should
  640. take care that the field is COMPLETE. That is, if there are any
  641. variable sized sub-fields, they should be INSIDE the field and the
  642. SIZE indicated in TAG, OFFSET and SIZE should contain the complete
  643. size. In this way, programs which may not understand a particular
  644. TAG and associated field can still preserve the data (i.e., pass
  645. it on in the file) without worry that data pointed to by a
  646. potential offset was not copied.
  647.  
  648.  
  649. EXTENSION AREA
  650.  
  651. The Extension Area was created to satisfy requests from developers
  652. for additional file information. Every attempt has been made to
  653. keep the format of the Extension Area simple yet flexible enough
  654. to satisfy most developers' needs.
  655.  
  656. The Extension Area is pointed to by the Extension Area Offset in
  657. the TGA File Footer. If the Offset is ZERO (binary zero) then no
  658. Extension Area exists. Otherwise, this value is the offset from
  659. the beginning of the file to the beginning of the Extension Area.
  660.  
  661. The combination of the Developer Area and the Extension Area should
  662. serve Truevision and its developer community well into the future.
  663. However, should technology dictate additional changes to the
  664. specification, they will be quite easy to implement. The first
  665. field of the Extension Area is the "Extension Size" field. This
  666. field currently contains the value 495, indicating that there are
  667. 495 bytes in the fixed-length portion of the Extension Area. If
  668. future development warrants additional fields, then this value may
  669. change to indicate that new fields have been added. Any change in
  670. the number of bytes in the Extension Area will be made by
  671. Truevision and will be relayed to the Developer community via a
  672. revised TGA File Format Specification. TGA readers should only
  673. parse as much as they understand (i.e., 495 bytes for this first
  674. release). If they encounter additional bytes (as specified by the
  675. "Extension Size") they should not preserve them if rebuilding the
  676. file, since they do not know the nature of the extra bytes.
  677.  
  678.  
  679. Extension Size - Field 10 (2 Bytes):
  680.  
  681. Bytes 0-1 - This field is a SHORT field which specifies the number
  682.             of BYTES in the fixed-length portion of the Extension
  683.             Area. For Version 2.0 of the TGA File Format, this
  684.             number should be set to 495. If the number found in
  685.             this field is not 495, then the file will be assumed
  686.             to be of a version other than 2.0. If it ever becomes
  687.             necessary to alter this number, the change will be
  688.             controlled by Truevision, and will be accompanied by
  689.             a revision to the TGA File Format with an accompanying
  690.             change in the version number.
  691.  
  692. Author Name - Field 11 (41 Bytes):
  693.  
  694. Bytes 2-42 - This field is an ASCII field of 41 bytes where the
  695.              last byte must be a null (binary zero). This gives a
  696.              total of 40 ASCII characters for the name. If the
  697.              field is used, it should contain the name of the
  698.              person who created the image(author). If the field is
  699.              not used, you may fill it with nulls or a series of
  700.              blanks (spaces) terminated by a null. The 41st byte
  701.              must always be a null.
  702.  
  703. Author Comments - Field 12 (324 Bytes):
  704.  
  705. Bytes 43-366 - This is an ASCII field consisting of 324 bytes which
  706.                are organized as four lines of 80 characters, each
  707.                followed by a null terminator. This field is
  708.                provided, in addition to the original IMAGE ID field
  709.                (in the original TGA format), because it was
  710.                determined that a few developers had used the IMAGE
  711.                ID field for their own purposes. This field gives
  712.                the developer four lines of 80 characters each, to
  713.                use as an Author Comment area. Each line is fixed
  714.                to 81 bytes which makes access to the four lines
  715.                easy. Each line must be terminated by a null. If you
  716.                do not use all 80 available characters in the line,
  717.                place the null after the last character and blank
  718.                or null fill the rest of the line. The 81st byte of
  719.                each of the four lines must be null.
  720.  
  721. Date/Time Stamp - Field 13 (12 Bytes):
  722.  
  723. Bytes 367-378 - This field contains a series of 6 SHORT values
  724.                 which define the integer value for the date and
  725.                 time that the image was saved. This data is
  726.                 formatted as follows:
  727.  
  728.                    SHORT 0:  Month     (1-12)
  729.                    SHORT 1:  Day       (1- 31)
  730.                    SHORT 2:  Year      (4 digit, ie. 1989)
  731.                    SHORT 3:  Hour      (0- 23)
  732.                    SHORT 4:  Minute    (0 - 59)
  733.                    SHORT 5:  Second    (0 - 59)
  734.  
  735.               Even though operating systems typically time- and
  736.               date-stamp files, this feature is provided because
  737.               the operating system may change the time and date
  738.               stamp if the file is copied. By using this area, you
  739.               are guaranteed an unmodified region for date and time
  740.               recording. If the fields are not used, you should
  741.               fill them with binary zeros (0).
  742.  
  743. Job Name/ID - Field 14 (41 Bytes):
  744.  
  745. Bytes 379-419 - This field is an ASCII field of 41 bytes where the
  746.                 last byte must be a binary zero. This gives a total
  747.                 of 40 ASCII characters for the job name or the ID.
  748.                 If the field is used, it should contain a name or
  749.                 id tag which refers to the job with which the image
  750.                 was associated. This allows production companies
  751.                 (and others) to the images with jobs by using this
  752.                 field as a job name (i.e., CITY BANK) or job id
  753.                 number (i.e., CITY023). If the field is not used,
  754.                 you may fill it with a null terminated series of
  755.                 blanks (spaces) or nulls. In any case, the 41st
  756.                 byte must be a null.
  757.  
  758. Job Time - Field 15 (6 Bytes):
  759.  
  760. Bytes 420-425 - This field contains a series of 3 SHORT values
  761.                 which define the integer value for the job elapsed
  762.                 time when the image was saved. This data is
  763.                 formatted as follows:
  764.  
  765.                    SHORT 0:  Hours     (0 - 65535)
  766.                    SHORT 1:  Minutes   (0 - 59)
  767.                    SHORT 2:  Seconds   (0 - 59)
  768.  
  769. The purpose of this field is to allow production houses (and
  770. others) to keep a running total of the amount of time invested in
  771. a particular image. This may be useful for billing, costing, and
  772. time estimating. If the fields are not used, you should fill them
  773. with binary zeros (0).
  774.  
  775. Software ID - Field 16 (41 Bytes):
  776.  
  777. Bytes 426-466 - This field is an ASCII field of 41 bytes where the
  778.                 last byte must be a binary zero (null). This gives
  779.                 a total of 40 ASCII characters for the Software ID.
  780.                 The purpose of this field is to allow software to
  781.                 determine and record with what program a particular
  782.                 image was created. If the field is not used, you
  783.                 may fill it with a null terminated series of blanks
  784.                 (spaces) or nulls. The 41st byte must always be a
  785.                 null.
  786.  
  787. Software Version - Field 17 (3 Bytes):
  788.  
  789. Bytes 467-469 - This field consists of two sub-fields, a SHORT and
  790.                 an ASCII BYTE. The purpose of this field is to
  791.                 define the version of software defined by the
  792.                 "Software ID" field above. The SHORT contains the
  793.                 version number as a binary integer times 100.
  794.                 Therefore, software version 4.17 would be the
  795.                 integer value 417. This allows for two decimal
  796.                 positions of sub-version. The ASCII BYTE supports
  797.                 developers who also tag a release letter to the
  798.                 end. For example, if the version number is 1.17b,
  799.                 then the SHORT would contain 117. and the ASCII
  800.                 BYTE would contain "b". The organization is as
  801.                 follows:
  802.  
  803.                    SHORT (Bytes 0 - 1): Version Number * 100 BYTE
  804.                            (Byte 2):      Version Letter
  805.  
  806.                 If you do not use this field, set the SHORT to
  807.                 binary zero, and the BYTE to a space (" ").
  808.  
  809. Key Color - Field 18 (4 Bytes):
  810.  
  811. Bytes 470-473 - This field contains a long value which is the key
  812.                 color in effect at the time the image is saved. The
  813.                 format is in A:R:G:B where `A' (most significant
  814.                 byte) is the alpha channel key color (if you don't
  815.                 have an alpha channel in your application, keep
  816.                 this byte zero [0]).
  817.  
  818.                 The Key Color can be thought of as the `background
  819.                 color' or `transparent color'. This is the color
  820.                 of the `non image' area of the screen, and the same
  821.                 color that the screen would be cleared to if erased
  822.                 in the application. If you don't use this field,
  823.                 set it to all zeros (0). Setting the field to all
  824.                 zeros is the same as selecting a key color of
  825.                 black.
  826.  
  827.                 A good example of a key color is the `transparent
  828.                 color' used in TIPS (tm) for WINDOW loading/saving.
  829.  
  830.  
  831. Pixel Aspect Ratio - Field 19 (4 Bytes):
  832.  
  833. Bytes 474-477 - This field contains two SHORT sub-fields, which
  834.                 when taken together specify a size ratio. The
  835.                 format is as follows:
  836.  
  837.                    SHORT 0: Pixel Ratio Numerator (pixel width)
  838.                    SHORT 1: Pixel Ratio Denominator (pixel height)
  839.  
  840.               These sub-fields may be used to determine the aspect
  841.               ratio of a pixel. This is useful when it is important
  842.               to preserve the proper aspect ratio of the saved
  843.               image. If the two values are set to the same non-zero
  844.               value, then the image is composed of square pixels.
  845.               A zero in the second sub-field (denominator)
  846.               indicates that no pixel aspect ratio is specified.
  847.  
  848.  
  849. Gamma Value--Field 20 (4 Bytes):
  850.  
  851. Bytes 478-481 - This field contains two SHORT sub-fields, which
  852.                 when taken together in a ratio, provide a
  853.                 fractional gamma value. The format is as follows:
  854.  
  855.                    SHORT 0: Gamma Numerator
  856.                    SHORT 1: Gamma Denominator
  857.                 The resulting value should be in the range of 0.0
  858.                 to 10.0, with only one decimal place of precision
  859.                 necessary. An uncorrected image (an image with no
  860.                 gamma) should have the value 1.0 as the result.
  861.                 This may be accomplished by placing the same,
  862.                 non-zero values in both positions (i.e., 1/1). If
  863.                 you decide to totally ignore this field, please set
  864.                 the denominator (the second SHORT) to the value
  865.                 zero. This will indicate that the Gamma Value field
  866.                 is not being used.
  867.  
  868.  
  869. Color Correction Offset - Field 21 (4 Bytes):
  870.  
  871. Bytes 482-485 - This field is a 4-byte field containing a single
  872.                 offset value. This is an offset from the beginning
  873.                 of the file to the start of the Color Correction
  874.                 table.This table may be written anywhere between
  875.                 the end of the Image Data field (field 8) and the
  876.                 start of the TGA File Footer. If the image has no
  877.                 Color Correction Table or if the Gamma Value
  878.                 setting is sufficient, set this value to zero and
  879.                 do not write a Correction Table anywhere.
  880.  
  881.  
  882. Postage Stamp Offset--Field 22 (4 Bytes):
  883.  
  884. Bytes 486-489 - This field is a 4-byte field containing a single
  885.                 offset value. This is an offset from the beginning
  886.                 of the file to the start of the Postage Stamp
  887.                 Image. The Postage Stamp Image must be written
  888.                 after Field 25 (Scan Line Table) but before the
  889.                 start of the TGA File Footer. If no postage stamp
  890.                 is stored, set this field to the value zero (0).
  891.  
  892.  
  893. Scan Line Offset - Field 23 (4 Bytes):
  894.  
  895. Bytes 490-493 - This field is a 4-byte field containing a single
  896.                 offset value. This is an offset from the beginning
  897.                 of the file to the start of the Scan Line Table.
  898.  
  899. Attributes Type - Field 24 (1 Byte):
  900.  
  901. Byte 494-  This single byte field contains a value which specifies
  902.            the type of Alpha channel data contained in the file.
  903.  
  904.                  Value                   Meaning
  905.  
  906.                    0:    no Alpha data included (bits 3-0 of field
  907.                          5.6 should also be set to zero)
  908.                    1:    undefined data in the Alpha field, can
  909.                          be ignored
  910.                    2:    undefined data in the Alpha field, but
  911.                          should be retained
  912.                    3:    useful Alpha channel data is present
  913.                    4:    pre-multiplied Alpha (see description
  914.                          below)
  915.                 5-127:   RESERVED
  916.                 128-255: Un-assigned
  917.  
  918.             Pre-multiplied Alpha Example: Suppose the Alpha channel
  919.             data is being used to specify the opacity of each pixel
  920.             (for use when the image is overlayed on another image),
  921.             where 0 indicates that the pixel is completely
  922.             transparent and a value of 1 indicates that the pixel
  923.             is completely opaque (assume all component values have
  924.             been normalized). A quadruple (a, r, g, b) of ( 0.5,
  925.             1, 0, 0) would indicate that the pixel is pure red with
  926.             a transparency of one-half For numerous reasons
  927.             (including image compositing) is is better to
  928.             pre-multiply the individual color components with the
  929.             value in the Alpha channel. A pre-multiplication of the
  930.             above would produce a quadruple (0.5, 0.5, 0, 0).
  931.  
  932.             A value of 3 in the Attributes Type Field (field 23)
  933.             would indicate that the color components of the pixel
  934.             have already been scaled by the value in the Alpha
  935.             channel. For more information concerning pre-multiplied
  936.             values, refer to the 1984 SIGGRAPH Conference
  937.             Proceedings.
  938.  
  939.             Porter, T., T. Duff, "Compositing Digital Images,"
  940.             SIGGRAPH '84 Conference Proceedings, vol. 18, no. 3,
  941.             p. 254, ACM, July 1984.
  942.  
  943. Scan Line Table - Field 25 (Variable):
  944.  
  945.             This information is provided, at the developers'
  946.             request, for two purposes:
  947.  
  948.                  1) To make random access of compressed images
  949.                     easy.
  950.  
  951.                  2) To allow "giant picture" access in smaller
  952.                     "chunks".
  953.  
  954.             This table should contain a series of 4-byte offsets.
  955.             Each offset you write should point to the start of the
  956.             next scan line, in the order that the image was saved
  957.             (i.e., top down or bottom up). The offset should be
  958.             from the start of the file. Therefore, you will have
  959.             a four byte value for each scan line in your image.
  960.             This means that if your image is 768 pixels tall, you
  961.             will have 768, 4-byte offset pointers (for a total of
  962.             3072 bytes). This size is not extreme, and thus this
  963.             table can be built and maintained in memory, and then
  964.             written out at the proper time.
  965.  
  966. Postage Stamp Image - Field 26 (Variable):
  967.  
  968.             The Postage Stamp area is a smaller representation of
  969.             the original image. This is useful for "browsing" a
  970.             collection of image files. If your application can deal
  971.             with a postage stamp image, it is recommended that you
  972.             create one using sub-sampling techniques to create the
  973.             best representation possible. The postage stamp image
  974.             must be stored in the same format as the normal image
  975.             specified in the file, but without any compression. The
  976.             first byte of the postage stamp image specifies the X
  977.             size of the stamp in pixels, the second byte of the
  978.             stamp image specifies the Y size of the stamp in
  979.             pixels. Truevision does not recommend stamps larger
  980.             than 64 x 64 pixels, and suggests that any stamps
  981.             stored larger be clipped. Obviously, the storage of the
  982.             postage stamp relies heavily on the storage of the
  983.             image. The two images are stored using the same format
  984.             under the assumption that if you can read the image,
  985.             then you can read the postage stamp. If the original
  986.             image is color mapped, DO NOT average the postage
  987.             stamp, as you will create new colors not in your map.
  988.  
  989. Color Correction Table - Field 27 (2K Bytes):
  990.  
  991.             The Color Correction Table is a block of 256 x 4 SHORT
  992.             values, where each set of four contiguous values are
  993.             the desired A:R:G:B correction for that entry. This
  994.             allows the user to store a correction table for image
  995.             remapping or LUT driving. Since each color in the block
  996.             is a SHORT, the maximum value for a color gun (i.e.,
  997.             A, R, G, B) is 65535, and the minimum value is zero.
  998.             Therefore, BLACK maps to 0, 0, 0, 0 and WHITE maps to
  999.             65535, 65535, 65535, 65535.
  1000.  
  1001. TGA FILE FOOTER
  1002.  
  1003.  1. A TGA Reader should begin by determining whether the desired
  1004.     file is in the Original TGA Format or the New TGA Format. This
  1005.     is accomplished by examining the last 26 bytes of the file
  1006.     (most operating systems support some type of SEEK function).
  1007.     Reading the last 26 bytes from the file will either retrieve
  1008.     the last 26 bytes of image data (if the file is in the Original
  1009.     TGA Format), or it will retrieve the TGA File Footer (if the
  1010.     file is in the New TGA Format).
  1011.  
  1012.  2. To determine whether the acquired data constitutes a legal TGA
  1013.     File Footer, scan bytes 8-23 of the footer as ASCII characters
  1014.     and determine whether they match the signature string:
  1015.  
  1016.                         TRUEVISION-XFILE
  1017.  
  1018.     This string is exactly 16 bytes long and is formatted exactly
  1019.     as shown above (capital letters), with a hyphen between
  1020.     "TRUEVISION" and "XFILE." If the signature is detected, the
  1021.     file is assumed to be in the New TGA format and MAY, therefore,
  1022.     contain the Developer Area and/or the Extension Area fields.
  1023.     If the signature is not found, then the file is assumed to be
  1024.     in the Original TGA format and should only contain areas 1 and
  1025.     2; therefore, the byte format for the TGA File Footer is
  1026.     defined as follows:
  1027.  
  1028.                  Bytes 0-3:   The Extension Area Offset
  1029.                  Bytes 4-7:   The Developer Directory Offset
  1030.                  Bytes 8-23:  The Signature
  1031.                  Byte 24:     ASCII Character "."
  1032.                  Byte 25:     Binary zero string terminator (0x00)
  1033.  
  1034. Note: DEVELOPERS ARE NOT REQUIRED TO READ, WRITE OR USE THE
  1035. EXTENSION OR DEVELOPER AREAS; THEY ARE OPTIONAL. EVEN IF THESE
  1036. AREAS ARE NOT USED, IT IS RECOMMENDED THAT A TGA FILE FOOTER STILL
  1037. BE INCLUDED WITH THE FILE. Please see page 19 for more information
  1038. about the TGA File Footer.
  1039.  
  1040. Byte 0-3--Extension Area Offset--Field 28
  1041.  
  1042.             The first four bytes (bytes 0-3, the first LONG) of the
  1043.             TGA File Footer contain an offset from the beginning
  1044.             of the file to the start of the Extension Area. Simply
  1045.             SEEK to this location to position to the start of the
  1046.             Extension Area. If the Extension Area Offset is zero,
  1047.             no Extension Area exists in the file.
  1048.  
  1049. Byte 4-7--Developer Directory Offset--Field 29
  1050.  
  1051.             The next four bytes (bytes 4-7, the second LONG)
  1052.             contain an offset from the beginning of the file to the
  1053.             start of the Developer Directory. If the Developer
  1054.             Directory Offset is zero, then the Developer Area does
  1055.             not exist.
  1056.  
  1057. Byte 8-23--Signature--Field 30
  1058.  
  1059.             This string is exactly 16 bytes long and is formatted
  1060.             exactly as shown below capital letters), with a hyphen
  1061.             between "TRUEVISION" and "XFILE." If the signature is
  1062.             detected, the file is assumed to be of the New TGA
  1063.             format and MAY, therefore, contain the Developer Area
  1064.             and/or the Extension Area fields. If the signature is
  1065.             not found, then the file is assumed to be in the
  1066.             Original TGA format.
  1067.  
  1068.                         TRUEVISION-XFILE
  1069.  
  1070. Byte 24--Reserved Character--Field 31
  1071.  
  1072.             Byte 24 is an ASCII character "." (period). This
  1073.             character MUST BE a period or the file is not
  1074.             considered a proper TGA file.
  1075.  
  1076. Byte 25--Binary Zero String Terminator--Field 32
  1077.  
  1078.             Byte 25 is a binary zero which acts as a final
  1079.             terminator and allows the entire TGA File Footer to be
  1080.             read and utilized as a "C" string.
  1081.  
  1082. IMAGE TYPES
  1083.  
  1084. DATA TYPE 1--COLOR-MAPPED IMAGES
  1085.  
  1086. Application:
  1087.  
  1088. This data type is used for storing color-mapped images (e.g.,
  1089. VDA/D, TARGA M8 or Color-Mapped TrueVista images). Images stored
  1090. in this format can be retrieved and displayed rapidly; however, a
  1091. full-screen (256 x 200) VDA image requires 51K bytes of storage.
  1092. This format is desirable where storage and display time are
  1093. critical but where file size is not.
  1094.  
  1095. This file format also provides a compact way to store limited-color
  1096. True-Color TARGA images. Software can easily display color-mapped
  1097. images in real-color display modes by mapping pixels when it copies
  1098. them to the display memory.
  1099.  
  1100. File Format Requirements:
  1101.  
  1102. Field 2 - Color-Map Type (1 Byte):
  1103.  
  1104. This value MUST be 1 (0x01) for this type.
  1105.  
  1106. Field 3 - Image Type (1 Byte):
  1107.  
  1108. This value is 1 (0x01) for this data type.
  1109.  
  1110.  
  1111. DATA TYPE 2 - TRUE-COLOR IMAGES
  1112.  
  1113. Application:
  1114.  
  1115. This data type is used for storing images where each pixel is
  1116. represented by its red, green, and blue values (e.g. ICB, TARGA
  1117. 16, TARGA 24, TARGA 32, and TrueVISTA images). This format is
  1118. useful where storage and display time are critical and where file
  1119. size is not.
  1120.  
  1121. File Format Requirements:
  1122.  
  1123. Field 2 - Color-Map Type (1 Byte):
  1124.  
  1125. This value MUST be 0 (0x00). TIPS (r) from Truevision sets this
  1126. value to 1 and stores a color pallet in this area. It is wise to
  1127. check the image type to know when a color-map is needed, otherwise
  1128. ignore the information. When new releases of Truevision software
  1129. products are made available they will meet the TGA standard file
  1130. format and no longer put pallet information in the color-map area.
  1131.  
  1132. Field 3--Image Type (1 Byte):
  1133.  
  1134. This value must be 2 (0x02) for this data type.
  1135.  
  1136. DATA TYPE 3--BLACK AND WHITE (UNMAPPED) IMAGES
  1137.  
  1138. Application
  1139.  
  1140. This data type is used for storing raster images where each pixel
  1141. can be represented by a grey-scale value (e.g., the TARGA 8, TARGA
  1142. M8 and some TrueVista modes).
  1143.  
  1144. This file format is used by the demonstration programs distributed
  1145. with the TARGA 8.
  1146.  
  1147. File Format Requirements:
  1148.  
  1149. Field 2 - Color-Map Type (1 Byte):
  1150.  
  1151. This value is always Zero (0X00) for unmapped images.
  1152.  
  1153. Field 3 - Image Type (1 Byte):
  1154.  
  1155. This value is 3 (0x03) for this data type.
  1156.  
  1157. DATA TYPE 9 - RUN-LENGTH ENCODED (RLE), COLOR-MAPPED IMAGES
  1158.  
  1159. Application:
  1160.  
  1161. This data type is used for storing images where each pixel is
  1162. represented by a color map index. The information is encoded so
  1163. that successive pixels with the same color value are run-length
  1164. encoded. This format is designed for use with computer-generated
  1165. (as opposed to captured) images which have large contiguous
  1166. sections containing the same colors.
  1167.  
  1168. File Format Requirements:
  1169.  
  1170. Field 2 - Color Map Type (1 Byte):
  1171.  
  1172. This value is always 1 (0x01) for color-mapped images.
  1173.  
  1174. Field 3 - Image Type (1 Byte):
  1175.  
  1176. This value is 9 (0x09) for this data type.
  1177.  
  1178. DATA TYPE 10 - RUN-LENGTH ENCODED (RLE), TRUE-COLOR IMAGES
  1179.  
  1180. Application:
  1181.  
  1182. This data type is used for storing raster images where each pixel
  1183. is represented by its red, green, and blue components. The
  1184. information is encoded so that successive pixels with the same
  1185. color value are run-length encoded.
  1186.  
  1187. Use this format for storing ICB, TARGA (1 6, 24, and 32), and
  1188. TrueVISTA (1 6-bit RGB and 32-bit RGB modes) images. This type was
  1189. primarily designed for computer generated (as opposed to captured)
  1190. images which have large sections containing the same colors.
  1191.  
  1192. File Format Requirements:
  1193.  
  1194. Field 2 - Color Map Type (1 Byte):
  1195.  
  1196. This value is always Zero (0X00) for True-Color images.
  1197.  
  1198. Field 3 - Image Type Code (1 Byte):
  1199.  
  1200. This value is 10 (0X0A) for this data type.
  1201.  
  1202. DATA TYPE 11 - RUN-LENGTH ENCODED (RLE), BLACK AND WHITE IMAGES
  1203.  
  1204. Application:
  1205.  
  1206. This data type is used for storing raster images where each pixel
  1207. is represented by a grey level. The information is encoded so that
  1208. successive pixels with the same color value are run-length encoded.
  1209.  
  1210. This format is used for storing black and white TARGA 8 and TARGA
  1211. M8 images and was primarily designed for use with
  1212. computer-generated (as opposed to captured) images which have large
  1213. sections containing the same gray values.
  1214.  
  1215. File Format Requirements:
  1216.  
  1217. Field 2 Color Map Type (1 Byte):
  1218.  
  1219. This value is always Zero (0X00) for True-Color images.
  1220.  
  1221. Field 3 Image Type Code (1 Byte):
  1222.  
  1223. This value is 11 (0X0B) for this data type.
  1224.  
  1225. RUN-LENGTH ENCODING OF IMAGES
  1226.  
  1227. Some of the Image Types described above are stored using a
  1228. compression algorithm called Run-length Encoding. This type of
  1229. encoding is used with file types 9 (Run-length Encoded Color-mapped
  1230. Images), 10 (Run-length Encoded True-Color Images) and 11
  1231. (Run-length Encoded Black-and-white Images).
  1232.  
  1233. Run-length encoding takes advantage of the fact that many types of
  1234. images have large sections in which the pixel values are all the
  1235. same. This situation occurs more often in graphic images as opposed
  1236. to captured, video images. In those images where large areas
  1237. contain pixels of the same value, run-length encoding can greatly
  1238. reduce the size of the stored image.
  1239.  
  1240. Run-length encoded (RLE) images comprise two types of data
  1241. elements: Run-length Packets and Raw Packets.
  1242.  
  1243. The first field (1 byte) of each packet is called the Repetition
  1244. Count field. The second field is called the Pixel Value field. For
  1245. Run-length Packets, the Pixel Value field contains a single pixel
  1246. value. For Raw Packets, the field is a variable number of pixel
  1247. values.
  1248.  
  1249. The highest order bit of the Repetition Count indicates whether
  1250. the packet is a Raw Packet or a Run-length Packet. If bit 7 of the
  1251. Repetition Count is set to 1, then the packet is a Run-length
  1252. Packet. If bit 7 is set to zero, then the packet is a Raw Packet.
  1253.  
  1254. The lower 7 bits of the Repetition Count specify how many pixel
  1255. values are represented by the packet. In the case of a Run-length
  1256. packet, this count indicates how many successive pixels have the
  1257. pixel value specified by the Pixel Value field. For Raw Packets,
  1258. the Repetition Count specifies how many pixel values are actually
  1259. contained in the next field. This 7 bit value is actually encoded
  1260. as I less than the number of pixels in the packet (a value of 0
  1261. implies 1 pixel while a value of 0x7F implies 128 pixels).
  1262.  
  1263. Run-length Packets should never encode pixels from more than one
  1264. scan line. Even if the end of one scan line and the beginning of
  1265. the next contain pixels of the same value, the two should be
  1266. encoded as separate packets. In other words, Run-length Packets
  1267. should not wrap from one line to another. This scheme allows
  1268. software to create and use a scan line table for rapid, random
  1269. access of individual lines. Scan line tables are discussed in
  1270. further detail in the Extension Area section of this document.
  1271.  
  1272. As an example of the difference between the two packet types,
  1273. consider a section of a single scan line with 128, 24-bit (3 byte)
  1274. pixels all with the same value (color). The Raw Packet would
  1275. require 1 byte for the Repetition Count and 128 pixels values each
  1276. being 3 bytes long (384 bytes). The total number of bytes required
  1277. to specify the chosen data using the Raw Packet is, therefore, 385
  1278. bytes. The Run-length Packet would require 1 byte for the
  1279. Repetition Count and a single, 3-byte pixel value. The total number
  1280. of bytes required to specify the chosen data using the Run-length
  1281. Packet is, therefore, just 4 bytes!
  1282.  
  1283. Run-Length Packet:
  1284.  
  1285. Run-length packets are composed of two parts. The first is a
  1286. repetition count and the second is the pixel value to repeat.
  1287.  
  1288. Field Name     Packet Type    Pixel Count          Pixel Data
  1289.               MUST BE 1 for  (number of pixels     The common
  1290.                run-length     encoded by this    pixel value to
  1291.                                 packet -1)           be used
  1292. Field Size        1 bit           7 bits           Pixel Depth
  1293.                                                    (field 5.5)
  1294.  
  1295.                    Table 3--Run-length Packet
  1296.  
  1297. 1.  Pixel Count: The pixel count can range from 0 to 127. Since a
  1298. run-length packet never encodes zero pixels, and in order to make
  1299. use of all of the values available with seven bits, a zero (0) in
  1300. Pixel Count is defined to mean that 1 pixel is encoded by the
  1301. packet. A 1 in Pixel Count means that 2 pixels are actually
  1302. contained in the packet. In other words, the value in Pixel Count
  1303. is always 1 less than the actual number of pixels encoded in the
  1304. packet. Thus, you may encode between 1 and 128 pixels with a single
  1305. packet. If you have a run which is longer than 128 bytes, you must
  1306. encode it using multiple packets.
  1307.  
  1308. Note: The high-order bit of this subfield is always set to 1 to
  1309. indicate that the packet type is Run-length.
  1310.  
  1311. 2.  Pixel Data: This field contains a single pixel value to be
  1312. repeated. The number of bits in this field is specified in Field
  1313. 5.5 of the TGA File Header.
  1314.  
  1315. If 19 contiguous pixels in a scan line had the value 0x36 (assuming
  1316. 8-bits-per-pixel) then the Run-length Packet would be encoded as
  1317. follows:
  1318.  
  1319.       Packet Type     Pixel Count        Pixel Data
  1320.            1         0010010 (0x12)    001100110 (0x36)
  1321.  
  1322. Remember that the Repetition Count contains 1 less than the actual
  1323. number of pixels being encoded. Since we were encoding 19 (0x13)
  1324. pixels, a value of 18 (0xl2) was placed in the repetition count.
  1325. Also, since this is a Run-length Packet, the high-order bit is set
  1326. to 1. This changes the Repetition Count byte from a 0xl2 to a 0x92.
  1327. The resulting packet is, therefore, 0x9236.
  1328.  
  1329. Raw Packet (i.e., Non-Run-Length Encoded):
  1330.  
  1331. The raw packet is always composed of two fields. The first field
  1332. is the Repetition Count and the second field is the Pixel Data
  1333. field.
  1334.  
  1335. Field Name     Packet Type       Pixel Count      Pixel Data
  1336.               MUST BE 0 for   (number of pixels
  1337.                raw packet      encoded by this
  1338.                                   packet -1)
  1339. Field Size        1 bit             7 bits        (Pixel depth *
  1340.                                                  Pixel Count + 1)
  1341.  
  1342.                        Table 4--Raw Packet
  1343.  
  1344. 1.  Pixel Count: The pixel count can range from 0 to 127. Since a
  1345. raw packet never encodes zero pixels, and in order to make use of
  1346. all of the values available with seven bits, a zero (0) in Pixel
  1347. Count is defined to mean that 1 pixel is included in the packet.
  1348. A 1 in Pixel Count means that 2 pixels are actually contained in
  1349. the packet. In other words, the value in Pixel Count is always 1
  1350. less than the actual number of pixels contained in the packet.
  1351. Thus, you may encode between 1 and 128 pixels with a single packet.
  1352. If you have a run which is longer than 128 bytes, you must encode
  1353. it using multiple packets.
  1354.  
  1355. Note: The high-order bit of this subfield is always set to 0 to
  1356. indicate that the packet type is a Raw Packet.
  1357.  
  1358. 2.  Pixel Data: Non-Run-Length Encoded pixel data. The pixels will
  1359. be displayed in the order that they are stored.
  1360.  
  1361.